package io.file;

import java.io.File;
import java.io.IOException;

/**
 * File类三种构造方法
 * <p>
 * 1,File(File parent, String child)
 * 从父抽象路径名和子路径名字符串创建新的 File实例。
 * <p>
 * 2,File(String pathname)
 * 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
 * <p>
 * 3,File(String parent, String child)
 * 从父路径名字符串和子路径名字符串创建新的 File实例。
 * <p>
 * 4,File(URI uri)
 * 通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。
 */
public class Demo01BasicMethod {
    public static void main(String[] args) {
        File file1 = new File("F://jhh.txt");
        File file2 = new File("F://111.txt");

        //如果文件不存在，创建文件
        if (!file1.exists()) {
            try {
                file1.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        if (!file2.exists()) {
            try {
                file2.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        //文件是否可读
        boolean b = file1.canRead();

        //文件是否可写
        boolean b1 = file1.canWrite();

        //文件是否可运行
        boolean b2 = file1.canExecute();

        //删除改文件
        file2.delete();

        //返回当前抽象路径下的文件或者绝对路径名字字符串
        File absoluteFile = file1.getAbsoluteFile();
        String absolutePath = file1.getAbsolutePath();

        //返回由此抽象路径名表示的文件或目录的名称
        String name = file1.getName();

        //返回此抽象路径的父路径文件或者父路径名称字符串
        String parent = file1.getParent();
        File parentFile = file1.getParentFile();

        //将此抽象路径转化成字符串
        String path = file1.getPath();

        //测试这个抽象路径是否是绝对的
        boolean absolute = file1.isAbsolute();

        //测试这个抽象路径是否为普通文件
        boolean file = file1.isFile();

        //测试这个抽象路径是否为目录
        boolean directory = file1.isDirectory();

        //返回此抽象路径表示的文件的长度
        long length = file1.length();

        //!!!!!重点
        //返回一个字符串数组，字符串为此抽象路径名表示的目录中的文件和目录。
        String[] list = file1.list();

        //String[] list(FilenameFilter filter)
        //返回一个字符串数组，命名由此抽象路径名表示的目录中满足指定过滤器的文件和目录。

        //返回一个抽象路径名数组，表示由该抽象路径名表示的目录中的文件。
        File[] files = file1.listFiles();

        //File[] listFiles(FilenameFilter filter)
        //返回一个抽象路径名数组，表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。

        //File[] listFiles(FileFilter filter)
        //返回一个抽象路径名数组，表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。

        //创建由此抽象路径名命名的目录。
        file1.mkdir();

        //创建由此抽象路径名命名的目录，包括任何必需但不存在的父目录。
        file1.mkdirs();

        //renameTo(File dest)
        //重命名由此抽象路径名表示的文件。
    }
}
